fn main() {
    let mut str1 = String::new();
    str1.push_str("hello");
    println!("str1 = {}", str1);

    let str2 = String::from("init some thing");
    println!("str2 = {}", str2);
    
    let str2 = "init some thing".to_string();
    println!("str2 = {}", str2);

    let mut s2 = String::from("hello");
    s2.push_str(", world");

    let s3 = " !".to_string();
    s2.push_str(&s3);
    println!("s2 = {}", s2);
    println!("s3 = {}", s3);

    let mut s2 = String::from("tea");
    s2.push('m');
    println!("s2 = {}", s2);

    let str_a = String::from("tic");
    let str_b = String::from("tac");
    let str_c = String::from("toe");

    let str_d = format!("{}-{}-{}", str_a, str_b, str_c);
    println!("{}", str_d);

    println!("Hello, world!");
}